﻿#include "Ogre.h"
#include "OgreConfigFile.h"
#include "OgreFrameListener.h"


using namespace Ogre;

_NAMESPACE_BEGIN

class OGREApplication
{
public:
	/// 构造
	OGREApplication();
	/// 析构
	virtual ~OGREApplication();

	/// 程序开始
	virtual void go(void);

protected:
	Root *mRoot;
	Camera* mCamera;
	SceneManager* mSceneMgr;
	OGREFrameListener* mFrameListener;
	RenderWindow* mWindow;
	Viewport* mViewport;
	Ogre::String mResourcePath;

	virtual bool setup(void);
	
	/// 配置程序，当用户选择退出时返回false
	virtual bool configure(void);

	virtual void chooseSceneManager(void);
	virtual void createCamera(void);
	virtual void createFrameListener(void);

	virtual void createScene(void) = 0;    ///< 必须被重写

	virtual void destroyScene(void);    ///< 可选择是否重写

	virtual void createViewports(void);

	/// 该方法将获取资源的位置(而不一定是当前文件夹)
	virtual void setupResources(void);

	/// 可选择是否重写的方法，你可以在这里创建资源监听(主要供载入界面使用)
	virtual void createResourceListener(void);

	/// 可选择是否重写的方法，你可以在此载入资源组
	/// 最少要执行ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
	virtual void loadResources(void);

};

_NAMESPACE_END